package com.briup.day17;

import java.io.File;
import java.io.IOException;

/**
 * @author lining
 * @date 2024/1/29 9:18
 */
public class TestFile {
    //IOException
    public void method() throws IOException{
        //1.创建一个文件对象，表示当前一个文件
        String pathName = "E:\\abc.txt";//文件路径： 绝对 相对路径
        pathName = "a.txt";//表示什么含义 在当前项目根目录作为绝对路径
        //无论是否存在这个文件，都可以创建成功
        File file = new File(pathName);
        //2.调用方法实现对文件的各种操作
        System.out.println("是否存在："+file.exists());
        System.out.println("绝对路径："+file.getAbsolutePath());
        if(!file.exists()){//当文件不存在后，
            //新建文件,提示编译错误，继续抛出  捕获异常
            file.createNewFile();
        }
        System.out.println("是否是目录："+file.isDirectory());
        System.out.println("文件名称："+file.getName());
        System.out.println("是否可读:"+file.canRead());
        System.out.println("是否可写:"+file.canWrite());
        System.out.println("文件大小："+file.length());
    }
    public void method2(){
        //1.文件对象可能是普通文件或者目录  /a/b/c
        File file = new File("src\\com\\briup\\day05");//当前项目名/src
        System.out.println(file.exists());
        System.out.println(file.isDirectory());//是否是目录

        //2.通过目录文件对象获取子文件（目录）
        if(file.isDirectory()){
            File[] files = file.listFiles();
            //增强for
            for (File child: files){
                System.out.println("子文件名称："+child.getName());
            }
        }
    }
    //设计一个方法实现将任意文件/目录所有子文件全部打印输出
    // com  com/briup  day01  dayo02   TestXX.java
    public static void printAllFile(File file){
        if(file.isFile()){
            //停止条件。不需要继续遍历for获取子目录
            return;
        }
        //然后打印名字
//        System.out.println(file.getName());
        if(file.isDirectory()){
//            通过遍历获取到所有子文件
            File[] files = file.listFiles();
            //递归写法 1.方法调用方法 2.停止条件（有限层级）
            for (File child : files){
                System.out.println(child.getName());
                //继续对子目录（文件）遍历
                printAllFile(child);
            }
        }

    }


    public static void main(String[] args) throws IOException {
//        File file = new File("a.txt");
//        File file = new File("src/com/briup", "day02");
        File file = new File("src");
        TestFile.printAllFile(file);
    }
}
